library(here)
library(magrittr)
library(dplyr)
library(readr)
library(stringr)
library(ggplot2)
library(viridis)
knitr::opts_chunk$set(echo = T,
message = F,
include = T,
out.width = '90%',
fig.align = 'center',
dpi = 200)
theme_set(theme_minimal())
# >>>>> custom funkcije
crossrefSpol <- function(name,
reference_list = d_infleks) {
.crossref <- dplyr::filter(reference_list,
infleksijska_forma == name)
if (nrow(.crossref) > 1) {
return('nepoznato')
}
else if (nrow(.crossref) == 0) {
return(NA_character_)
}
else {
return(.crossref$spol)
}
}Podaci korišteni u ovom izvještaju dostupni su na Portalu otvorenih podataka (ovdje) Podaci korišteni u analizi preuzeti su 02. studenog 2021., u 13:48.
d_osnovne <- readr::read_csv2(here::here('data',
'obrazovne-ustanove_popis_datagov',
'popis_osnovne-skole.csv')) %>%
janitor::clean_names(.)
d_srednje <- read_csv2(here('data',
'obrazovne-ustanove_popis_datagov',
'popis_srednje-skole.csv')) %>%
janitor::clean_names(.)
d_visoko <- read_csv2(here('data',
'obrazovne-ustanove_popis_datagov',
'popis_visoko-obrazovanje.csv')) %>%
janitor::clean_names(.)
d_infleks <- read_csv(here('data',
'infleksijska-baza',
'infleksijska-baza.csv'),
col_names = c('infleksijska_forma',
'lema',
'oznaka'))Tablica s podacima o visokim učilištima sadrži stupac Celnik, u kojem su navedene čelne osobe institucija, s pripadajućim nazivom funkcije koju obnašaju (na primjer “dekanica” ili “dekan”).
tail(d_visoko$celnik)## [1] "privremena dekanica prof. dr. sc. Vesnica Mlinarević"
## [2] "dekanica prof. dr. sc. Maja Fredotović"
## [3] "dekanica prof. dr. sc. Jadranka Frece"
## [4] "dekan prof. dr. sc. Goran Hauser"
## [5] "dekanica prof. dr. sc. Zrinka Tarle"
## [6] "dekan prof. dr. sc. Igor Gliha"
Budući da se naziv funkcije mijenja ovisno o spolu rukovodeće osobe, na temelju te informacije možemo doznati kojeg su spola čelnici visokoobrazovnih institucija u Hrvatskoj. Funkcije koje se javljaju u ovom skupu podataka su dekanica/dekan, pročelnica/pročelnik i rektorica/rektor.
d_visoko$spol <-
dplyr::case_when(stringr::str_detect(d_visoko$celnik,
'dekanica|rektorica|pročelnica') ~ 'z',
str_detect(d_visoko$celnik,
'dekan|rektor|pročelnik') ~ 'm',
T ~ NA_character_)Popisi osnovnih i srednjih škola u sebi ne sadrže eksplicitan podatak o spolu ravnateljice odnosno ravnatelja. Međutim, budući da je na ovom području ime osobe snažan signal za njen spol, možemo iskoristiti infleksijsku bazu hrvatskih imena i prezimena1 da bismo dobili dobru procjenu spola osoba na rukovodećim pozicijama u osnovnim i srednjim školama.
Infleksijska baza hrvatskih imena i prezimena sadrži tri stupca: infleksijske forme imena i prezimena, njihove leme, i leksičke oznake2:
head(d_infleks)## # A tibble: 6 × 3
## infleksijska_forma lema oznaka
## <chr> <chr> <chr>
## 1 Aaronson Aaronson Np-sn
## 2 Aaronsona Aaronson Np-pg
## 3 Aaronsona Aaronson Np-sa--y
## 4 Aaronsona Aaronson Np-sg
## 5 Aaronsone Aaronson Np-pa
## 6 Aaronsone Aaronson Np-sv
Prvo što trebamo napraviti jest izvući imena ravnateljica i ravnatelja iz popisa osnovnih i srednjih škola. Ti podaci nalaze se u varijabli Ravnatelj.
head(d_osnovne$ravnatelj)## [1] "Ivica Škrpaca" "Lidija Zekan" "Nada Dundović" "Marin Vuletin"
## [5] "Iva Petričević" "Mirela Mijić"
head(d_srednje$ravnatelj)## [1] "Ivan Glibota" "Ivan Srzić" "Vesna Alebić"
## [4] "Višnja Popović" "Romana Vuksan Zuban" NA
Možemo vidjeti da unosi u polje prvo imaju navedena imena, a potom prezimena, te da su imena i prezimena odvojena samo razmacima3. Također možemo vidjeti da, iz nekog meni nepoznatog razloga, za neke škole nemamo navedeno ime ravnateljice, odnosno ravnatelja (označeno s NA).
Za procjenjivanje spola uzet ću samo prvu riječ upisanu u varijablu Ravnatelj za svaku školu. Zbog toga neću zahvatiti oba imena osoba koje imaju dva imena ako su ona odvojena razmakom (umjesto crticom; na primjer, ako je ime “Ana Marija”, dohvatit ću samo “Ana”, a ako je “Ana-Marija”, dohvatit ću “Ana-Marija”). Ipak, smatram da za samu procjenu spola to nije potrebno jer bi i samo jedno od višestrukih imena trebalo biti dovoljno.
d_osnovne$ravnatelj_ime <- d_osnovne$ravnatelj %>%
stringr::str_extract(.,
pattern = '^\\w+')
d_srednje$ravnatelj_ime <- d_srednje$ravnatelj %>%
str_extract(.,
pattern = '^\\w+')Jednom kad imamo imena, možemo ih usporediti s infleksijskom bazom imena i prezimena. U infleksijskoj bazi ću zadržati samo unose koji imaju oznaku Npfsn ili Npmsn jer, ako dobro tumačim bazu, te oznake stoje uz osobne imenice u nominativu jednine, pri čemu f i m označavaju da je ime tradicionalno žensko odnosno muško.
d_infleks <- dplyr::filter(d_infleks,
str_detect(oznaka,
'Np(f|m)sn'))
d_infleks$spol <- case_when(str_detect(d_infleks$oznaka,
'f') ~ 'z',
str_detect(d_infleks$oznaka,
'm') ~ 'm')Nakon toga, možemo usporediti popis imena u infleksijskoj bazi s popisima imena ravnateljica i ravnatelja. Ono na što je potrebno paziti su imena poput “Vanja”, koja se daju osobama oba spola, te koja u infleksijskoj bazi imaju dva unosa.
filter(d_infleks,
infleksijska_forma == 'Vanja')## # A tibble: 2 × 4
## infleksijska_forma lema oznaka spol
## <chr> <chr> <chr> <chr>
## 1 Vanja Vanja Npfsn z
## 2 Vanja Vanja Npmsn m
Ako u bazi postoje takva imena, pod oznaku spola ću staviti nepoznato. Ako nekog imena nema u bazi, kao oznaku spola stavit ću NA.
d_osnovne$ravnatelj_spol <- apply(d_osnovne[, 'ravnatelj_ime'],
MARGIN = 1,
FUN = crossrefSpol)
d_srednje$ravnatelj_spol <- apply(d_srednje[, 'ravnatelj_ime'],
MARGIN = 1,
FUN = crossrefSpol)Nakon prvog pokušaja povezivanja imena u infleksijskoj bazi i imena rukovodećih osoba u popisima škola, dobivamo poveći broj oznaka nepoznato; također, imamo ponešto oznaka NA, koje su dodijeljene osobama čije se ime ne nalazi u infleksijskoj bazi i ustanovama koje nemaju navedenu čelnu osobu. Za osnovne škole:
table(d_osnovne$ravnatelj_spol,
useNA = 'always')##
## m nepoznato z <NA>
## 278 95 525 21
Za srednje škole:
table(d_srednje$ravnatelj_spol,
useNA = 'always')##
## m nepoznato z <NA>
## 188 45 187 22
Podaci za te osobe su izvučeni u posebnu tablicu i ručno kodirani. U nekim slučajevima je ostavljena oznaka nepoznato jer nije bilo moguće s visokom razinom sigurnosti utvrditi spol osobe na temelju drugih javno dostupnih podataka (poput informacija na web stranici škole).
# >>>>> osnovne skole
d_osnovne_spol <- readr::read_tsv(here('data',
'obrazovne-ustanove_popis_datagov',
'popis_osnovne-skole_kod-spolova.tsv'))
. <- filter(d_osnovne,
ravnatelj_spol == 'nepoznato')
d_osnovne %<>%
filter(.,
ravnatelj_spol != 'nepoznato' | is.na(ravnatelj_spol))
. <- left_join(.,
d_osnovne_spol,
by = c('naziv',
'zupnija',
'mjesto',
'adresa',
'ravnatelj',
'web'),
suffix = c('_orig',
'_kod'))
. <- dplyr::select(.,
-'ravnatelj_spol_orig',
'ravnatelj_spol' = 'ravnatelj_spol_kod')
d_osnovne <- dplyr::bind_rows(d_osnovne,
.)
rm(d_osnovne_spol)
# rucno kodiranje osoba s imenima koja nisu u infleksijskoj bazi
d_osnovne[d_osnovne$ravnatelj == 'S. Mandica Starčević' &
!is.na(d_osnovne$ravnatelj),
'ravnatelj_spol'] <- 'z'
d_osnovne[d_osnovne$ravnatelj == 'Maryline Boussenard' &
!is.na(d_osnovne$ravnatelj),
'ravnatelj_spol'] <- 'z'
d_osnovne[d_osnovne$ravnatelj == 'Mileo Todić' &
!is.na(d_osnovne$ravnatelj),
'ravnatelj_spol'] <- 'm'
d_osnovne[d_osnovne$ravnatelj == 'Volodymyr Kubinskyy' &
!is.na(d_osnovne$ravnatelj),
'ravnatelj_spol'] <- 'm'
d_osnovne[d_osnovne$ravnatelj == 'Olivela Franko' &
!is.na(d_osnovne$ravnatelj),
'ravnatelj_spol'] <- 'z'
d_osnovne[d_osnovne$ravnatelj == 'Lareta Žubrinić' &
!is.na(d_osnovne$ravnatelj),
'ravnatelj_spol'] <- 'z'
d_osnovne[d_osnovne$ravnatelj == 'Kinga Kolar' &
!is.na(d_osnovne$ravnatelj),
'ravnatelj_spol'] <- 'z'
d_osnovne[d_osnovne$ravnatelj == 'Vranko Perković' &
!is.na(d_osnovne$ravnatelj),
'ravnatelj_spol'] <- 'm'
# >>>>> srednje skole
d_srednje_spol <- readr::read_tsv(here('data',
'obrazovne-ustanove_popis_datagov',
'popis_srednje-skole_kod-spolova.tsv'))
. <- filter(d_srednje,
ravnatelj_spol == 'nepoznato')
d_srednje %<>%
filter(.,
ravnatelj_spol != 'nepoznato' | is.na(ravnatelj_spol))
. <- left_join(.,
d_srednje_spol,
by = c('naziv',
'zupanija',
'mjesto',
'adresa',
'ravnatelj',
'web'),
suffix = c('_orig',
'_kod'))
. <- dplyr::select(.,
-'ravnatelj_spol_orig',
'ravnatelj_spol' = 'ravnatelj_spol_kod')
d_srednje <- bind_rows(d_srednje,
.)
rm(d_srednje_spol)
# rucno kodiranje osoba s imenima koja nisu u infleksijskoj bazi
d_srednje[d_srednje$ravnatelj == 'Volodymyr Kubinskyy' &
!is.na(d_srednje$ravnatelj),
'ravnatelj_spol'] <- 'm'
d_srednje[d_srednje$ravnatelj == 'Alejandro Castillo Jimenez' &
!is.na(d_srednje$ravnatelj),
'ravnatelj_spol'] <- 'm'
d_srednje[d_srednje$ravnatelj == 'Mevludi Arslani' &
!is.na(d_srednje$ravnatelj),
'ravnatelj_spol'] <- 'm'Sad kad imamo procjenu spola za većinu rukovodećih osoba u osnovnim i srednjim školama, te na visokim učilištima, možemo analizirati njihovu spolnu strukturu.
d <- bind_rows(select(d_osnovne,
naziv,
tip_ustanove,
'celnik' = ravnatelj,
'spol' = ravnatelj_spol),
select(d_srednje,
naziv,
tip_ustanove,
'celnik' = ravnatelj,
'spol' = ravnatelj_spol),
select(d_visoko,
'naziv' = naziv_ustanove,
'tip_ustanove' = vrsta_ustanove,
celnik,
spol))U podacima imamo 1494 ustanove (919 osnovnih škola, 442 srednje škole i 133 visoka učilišta). Međutim, samo za 1462 čelne osobe imamo nekakav podatak o spolu. U daljnjem tekstu ću se fokusirati na podskup ustanova za koje imamo procjenu spola čelne osobe.
d %<>%
tidyr::drop_na(.,
spol)
d_dedupe <- d[!duplicated(d$celnik), ]
. <- table(d_dedupe$spol,
useNA = 'ifany')Sveukupno, na čelnim pozicijama imamo 1448 osoba. Čelnih osoba je manje nego ustanova zato jer su neki ljudi istovremeno čelnici nekoliko ustanova. Od tih 1448 čelnih osoba, procjenjujem da su 671 muškarci i 769 žene (8 nepoznato).
Kad to razlomimo po osnovnim i srednjim školama te visokim učilištima dobivamo:
.o <- select(d_osnovne,
'spol' = ravnatelj_spol) %>%
dplyr::mutate(.,
'vrsta_ustanove' = 'Osnovna škola') %>%
tidyr::drop_na(.)
.s <- select(d_srednje,
'spol' = ravnatelj_spol) %>%
mutate(.,
'vrsta_ustanove' = 'Srednja škola') %>%
tidyr::drop_na(.)
.v <- select(d_visoko,
spol) %>%
mutate(.,
'vrsta_ustanove' = 'Visoko učilište') %>%
tidyr::drop_na(.)
.d <- bind_rows(.o,
.s,
.v)
. <- table(.d$vrsta_ustanove,
.d$spol)
. <- .[, c('m', 'z', 'nepoznato')]
dimnames(.)[[2]] <- case_when(dimnames(.)[[2]] == 'z' ~ 'žene',
dimnames(.)[[2]] == 'm' ~ 'muškarci',
T ~ dimnames(.)[[2]])
knitr::kable(.)| muškarci | žene | nepoznato | |
|---|---|---|---|
| Osnovna škola | 351 | 548 | 7 |
| Srednja škola | 226 | 196 | 1 |
| Visoko učilište | 101 | 32 | 0 |
Kao alternativni pogled na ove podatke, na slici ispod prikazana je procijenjena proporcija muškaraca i žena na čelnim pozicijama unutar osnovnih škola, srednjih škola, i visokih učilišta (isključene su osobe s oznakom nepoznato).4
.d %>%
filter(.,
spol != 'nepoznato') %>%
mutate(.,
across(spol,
~ifelse(.x == 'm', 0, 1))) %>%
dplyr::group_by(.,
vrsta_ustanove) %>%
dplyr::summarise(.,
prop_z = mean(spol),
prop_m = 1 - mean(spol)) %>%
tidyr::pivot_longer(.,
cols = matches('^prop'),
names_pattern = 'prop_(.)',
names_to = 'spol',
values_to = 'proporcija') %>%
mutate(.,
across(spol,
as.factor)) %>%
ggplot2::ggplot(.,
aes(x = vrsta_ustanove,
fill = spol,
y = proporcija)) +
geom_bar(stat = 'identity',
position = 'dodge',
color = 'black',
alpha = 1) +
scale_fill_viridis_d(name = 'Spol',
labels = as_labeller(c('m' = 'muškarci',
'z' = 'žene'))) +
scale_y_continuous(breaks = seq(0,
1,
by = .1),
labels = as.character(seq(0,
1,
by = .1))) +
coord_cartesian(ylim = c(0, .8)) +
theme(panel.grid.major.x = element_blank(),
panel.grid.minor.y = element_line(linetype = 'dashed',
size = .5),
legend.position = c(.93, .7),
plot.caption.position = 'plot',
plot.caption = element_text(hjust = .5)) +
labs(x = 'Vrsta ustanove',
y = 'Proporcija',
caption = paste('Proporcija žena i muškaraca na rukovodećim',
'pozicijama obrazovnih ustanova različitih razina.'))Također, možemo vidjeti kakva je distribucija spolova po sastavnicama sveučilišta u Osijeku, Rijeci, Splitu i Zagrebu5:
. <- dplyr::filter(d_visoko,
str_detect(nadredjena_ustanova,
'Sveučilište')) %$%
table(spol,
nadredjena_ustanova)
dimnames(.)[[1]] <- case_when(dimnames(.)[[1]] == 'z' ~ 'Ženski',
dimnames(.)[[1]] == 'm' ~ 'Muški')
knitr::kable(.)| Sveučilište Josipa Jurja Strossmayera u Osijeku | Sveučilište u Rijeci | Sveučilište u Splitu | Sveučilište u Zagrebu | |
|---|---|---|---|---|
| Muški | 13 | 7 | 13 | 27 |
| Ženski | 4 | 9 | 3 | 7 |
Kao skupovi podataka koji predstavljaju temeljnu istinu u ovom slučaju uzeti su skupovi koji su datuma navedenog u uvodnom odlomku bili dostupni na stranicama data.gov.hr. Dakle, ako je u tim podacima krivo navedena čelna osoba neke insitutcije, ta se pogreška odražava u procjeni.
Damir Boras, Nives Mikelić, Davor Lauc (2003). Leksička flektivna baza podataka hrvatskih imena i prezimena, str. 219-236.↩︎
Nisam uspio pronaći dokumentaciju za ovaj skup podataka, tako da su sva tumačenja moja osobna procjena. Pretpostavio sam da se leksičke oznake mogu tumačiti u skladu s oznakama dostupnima ovdje: https://www.sketchengine.eu/multext-east-croatian-part-of-speech-tagset/↩︎
Zapravo, čini mi se da su višestruka imena i prezimena odvojena jednim razmakom, a da su imena i prezimena međusobno odvojena dvama razmacima. Na primjer, kad bismo razmak označili podvlakom _, imali bismo Ime1_Ime2__Prezime1_Prezime2.↩︎
Obrazovne ustanove su ovdje kategorizirane kao osnovne ili srednje škole, ili visoka učilišta na temelju toga iz kojeg su registra preuzeti njihovi podaci.↩︎
Ovdje su isključene rektorice i rektori.↩︎